package views.mediators {
  import com.axon.mvc.helpers.AxMvcUtils;
  import com.axon.mvc.helpers.AxVerbs;
  import com.axon.mvc.patterns.mediator.AxMediator;

  import flash.display.DisplayObject;

  import models.vo.User;

  import views.components.LoungeView;

  public class LoungeMediator extends AxMediator {
    private var ghostRemovida:Boolean = false;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function LoungeMediator(viewComponent:DisplayObject = null) {
      super(viewComponent);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function get view():LoungeView {
      return this.viewComponent as LoungeView;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    override protected function initialize():void {
      regResponseInterest(null, [AxVerbs.LOGIN, AxVerbs.LOGOUT]);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function eventViewCreated(body:Object):void {
      var mediatorClassName:String = AxMvcUtils.getMediatorClassNameByViewInstance(body);
      var mediatorClass:Class = AxMvcUtils.getMediatorClassReferenceByViewInstance(body);

      if (!facade.hasMediator(mediatorClassName))
        facade.registerMediator(new mediatorClass(body));
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function eventViewShow():void {
      if (!ghostRemovida) {
        AppFacade.getInstance().models.setoresEconomicos;
        view.tabNavigator.removeChild(view.ghostView);
        ghostRemovida = true;
      }
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function respLoginSuccess(sender:Object, body:Object, extraInfo:Object):void {
      if ((facade as AppFacade).sessionProxy.user.hasRole(User.ROLE_CONFERENTE))
        view.tabNavigator.selectedChild = view.pleitoListaTriagemView;

      view.visible = true;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function respLoginFailure(sender:Object, body:Object, extraInfo:Object):void {
      view.visible = false;
    }

    public function respLogoutSuccess(sender:Object, body:Object, extraInfo:Object):void {
      view.visible = false;
    }

  }
}